/**
 * 模型标签字段迁移脚本
 * 为所有已存在的模型添加 tags 字段
 */

const fs = require('fs').promises;
const fsSync = require('fs');
const path = require('path');

const PROJECTS_DIR = path.join(__dirname, '../../projects');

async function migrateModelTags() {
    console.log('🔄 开始迁移模型标签字段...\n');
    
    try {
        // 读取所有项目
        const projectDirs = await fs.readdir(PROJECTS_DIR);
        
        let totalProjects = 0;
        let totalModels = 0;
        let migratedModels = 0;
        
        for (const projectDir of projectDirs) {
            // 跳过非项目文件
            if (projectDir === 'projects.json' || projectDir.startsWith('.')) {
                continue;
            }
            
            const projectPath = path.join(PROJECTS_DIR, projectDir);
            
            try {
                const stat = await fs.stat(projectPath);
                if (!stat.isDirectory()) continue;
            } catch (err) {
                console.log(`⚠️  跳过 ${projectDir}: ${err.message}`);
                continue;
            }
            
            const modelsConfigPath = path.join(projectPath, 'models', 'models.json');
            
            // 检查 models.json 是否存在
            if (!fsSync.existsSync(modelsConfigPath)) {
                console.log(`⏭️  跳过项目 ${projectDir}: 没有 models.json`);
                continue;
            }
            
            totalProjects++;
            
            // 读取模型配置
            const modelsData = await fs.readFile(modelsConfigPath, 'utf-8');
            const modelsConfig = JSON.parse(modelsData);
            
            if (!modelsConfig.models || modelsConfig.models.length === 0) {
                console.log(`⏭️  跳过项目 ${projectDir}: 没有模型`);
                continue;
            }
            
            let projectMigrated = 0;
            
            // 为每个模型添加 tags 字段（如果不存在）
            modelsConfig.models.forEach(model => {
                totalModels++;
                
                if (!model.tags) {
                    model.tags = [];
                    projectMigrated++;
                    migratedModels++;
                }
            });
            
            if (projectMigrated > 0) {
                // 保存更新后的配置
                await fs.writeFile(modelsConfigPath, JSON.stringify(modelsConfig, null, 2), 'utf-8');
                console.log(`✅ 项目 ${projectDir}: 已为 ${projectMigrated} 个模型添加标签字段`);
            } else {
                console.log(`✓  项目 ${projectDir}: 所有模型已有标签字段`);
            }
        }
        
        console.log('\n📊 迁移统计:');
        console.log(`   - 处理的项目数: ${totalProjects}`);
        console.log(`   - 处理的模型数: ${totalModels}`);
        console.log(`   - 迁移的模型数: ${migratedModels}`);
        console.log('\n✅ 迁移完成！\n');
        
    } catch (error) {
        console.error('❌ 迁移失败:', error);
        process.exit(1);
    }
}

// 运行迁移
migrateModelTags();

